﻿/*
 * Archivo: Map.cs
 * Clase en las que están definidas las estructuras de datos necesarias 
 * para construir un mapa del juego.
 * Autores: Miguel De Los Ríos (05-38084)
 *          Carlos Sarmiento (05-38936)
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MageWars
{
    class Map
    {
        //Definicion de una estructura que guarda las posibles posiciones en el mapa
        public struct position
        {
            //Las variables comprenden la posición de un objeto cualquiera en x, y, z
            private float x;
            private float y;
            private float z;

            public position(float x, float y, float z)
            {
                this.x = x;
                this.y = y;
                this.z = z;
            }

            public float X
            {
                get
                {
                    return x;
                }
                set
                {
                    x = value;
                }

            }

            public float Y
            {
                get
                {
                    return y;
                }
                set
                {
                    y = value;
                }

            }

            public float Z
            {
                get
                {
                    return z;
                }
                set
                {
                    z = value;
                }

            }

            public void moveToPosition(float x, float y, float z)
            {
                X = X + x;
                Y = Y + y;
                Z = Z + z;
            }
        }

        //objectsPosition tiene las posiciones de cada objeto (montaña, plataforma, etc)
        //<color>_team_position tiene la posicion actual de los jugadores de un equipo.
        private int height;
        private int width;
        private position red_flag_pos;
        private position blue_flag_pos;
        private List<position> objectsPosition;
        private List<position> red_team_position;
        private List<position> blue_team_position;

        //Por ahora solo determina la altura y anchura del mapa, lo demás está cableado.
        public Map(int height, int width)
        {
            this.height = height;
            this.width = width;
            red_flag_pos = new position(1.0f, 1.0f, 0.0f);
            blue_flag_pos = new position((float)width - 1.0f, (float)height - 1.0f, 0.0f);
            objectsPosition = new List<position>();
            red_team_position = new List<position>() 
            { 
                new position(5.0f, 1.0f, 0.0f),
                new position(5.0f, 2.0f, 0.0f),
                new position(5.0f, 3.0f, 0.0f),
                new position(5.0f, 4.0f, 0.0f),
            };
            blue_team_position = new List<position>() 
            { new position((float)width - 5.0f, (float)height - 1.0f, 0.0f),
              new position((float)width - 5.0f, (float)height - 2.0f, 0.0f),
              new position((float)width - 5.0f, (float)height - 3.0f, 0.0f),
              new position((float)width - 5.0f, (float)height - 4.0f, 0.0f),
            };
        }
    }
}
